package main

import "fmt"

// 可以将方法与同包中声明的任何类型
// 相关联，但不可以是 int、float64 等预
// 声明的类型进行关联

// 在java中的含义就是 在kelvin类里面有个叫celsius的方法。k 就是kelvin类的实例。
// celsius 方法虽然没有参数。但它前面却有一个类型参数的接收者。
// 每个方法可以有多个参数，但只能有 一个 接收者。
// 在方法体中，接收者的行为和其它参数一样。
// 方法调用
// 变量 . 方法()
func main() {
	var k kelvin = 294.0
	var c celsius

	c = kelvinToCelsius(k)

	c = k.celsius()

	fmt.Println(c)
}

func kelvinToCelsius(k kelvin) celsius {
	return celsius(k - 273.15)
}

type celsius float64
type kelvin float64

func (k kelvin) celsius() celsius {
	return celsius(k - 273.15)
}
